package com.sub.structure.example;

public class LinkedListQueue<E> {

    //用于保存队列元素的链表
    private LinkedList<E> list;

    public LinkedListQueue() {
        this.list = new LinkedList<>();
    }

    /**
     * 用于统计队列元素的个数
     *
     * @return 队列元素的个数
     */
    public int size() {
        return list.size();
    }

    /**
     * 用于判断队列是否为空
     *
     * @return 队列是否为空
     */
    public boolean isEmpty() {
        return list.isEmpty();
    }

    /**
     * 新元素假如队尾
     *
     * @param element 新元素
     */
    public void enqueue(E element) {
        list.add(element);
    }

    /**
     * 队首元素出队
     *
     * @return 队首元素
     */
    public E dequeue() {
        if (isEmpty()) {
            return null;
        }
        return list.remove(0);
    }

    /**
     * 获取队首元素，但不出队
     *
     * @return 队首元素
     */
    public E front() {
        return list.get(0);
    }

}